﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestionaleLib.Controller;
using GestionaleLib;
using Leaf.View.Magazzino;

namespace Leaf.View.Prodotti
{
    public partial class frmElencoProdotti : Form
    {
        private Prodotto ProdottoSelezionato;

        public frmElencoProdotti()
        {
            InitializeComponent();
            Elenco();
        }
        public void Aggiorna()
        {
            Elenco();
        }
        private void Elenco()
        {
            Grid.DataSource = null;
            Grid.DataSource = new ctrlProdotti().Seleziona();
            FormattaGriglia();
        }
        private void Ricerca()
        {
            Grid.DataSource = null;
            Grid.DataSource = new ctrlProdotti().Seleziona(txtCerca.Text);
            FormattaGriglia();
        }
        private void FormattaGriglia()
        {
            if (Grid.Rows.Count > 0)
            {
                Grid.Columns["Id"].Visible = false;
                Grid.Columns["Prezzo"].DefaultCellStyle.Format = "c";
            }
        }
        private void cmdCerca_Click(object sender, EventArgs e)
        {
            Ricerca();
        }
        private void cmdNuovo_Click(object sender, EventArgs e)
        {
            frmAggiungiProdotto frm = new frmAggiungiProdotto(this);
            frm.MdiParent = this.MdiParent;
            frm.Show();
            Aggiorna();
        }
        private void cmdModifica_Click(object sender, EventArgs e)
        {
            if (Grid.DataSource != null &&
                Grid.Rows.Count > 0)
            {
                ProdottoSelezionato = (Prodotto)
                    Grid.SelectedRows[0].DataBoundItem;
                if (ProdottoSelezionato != null)
                {
                    frmAggiungiProdotto frm = new frmAggiungiProdotto(this,ProdottoSelezionato, 
                        FormStatus.StatoForm.Modifica);
                    frm.MdiParent = this.MdiParent;
                    frm.Show();
                }
            }
        }
        private void cmdCancella_Click(object sender, EventArgs e)
        {
            if (Grid.DataSource != null &&
                Grid.Rows.Count > 0)
            {
                DialogResult scelta = MessageBox.Show("Vuoi cancellare il prodotto?",
                    "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (scelta == System.Windows.Forms.DialogResult.Yes)
                {
                    try
                    {
                        new ctrlProdotti().Cancella((Prodotto)Grid.SelectedRows[0].DataBoundItem);
                        new ctrlProdottiDettagli(null).Cancella((Prodotto)Grid.CurrentRow.DataBoundItem);
                        Elenco();
                    }
                    catch (ExceptionErroreCancellazione)
                    {
                        MessageBox.Show("Errore durante la procedura");
                    }
                }
            }
        }
        private void Grid_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            cmdModifica_Click(sender, e);
        }
        private void cmdDisponibilitaMagazzino_Click(object sender, EventArgs e)
        {
            if (Grid.DataSource != null &&
                Grid.Rows.Count > 0)
            {
                ProdottoSelezionato = (Prodotto)
                    Grid.SelectedRows[0].DataBoundItem;
                frmSchedaProdotto frm = new frmSchedaProdotto(ProdottoSelezionato);
                frm.MdiParent = this.MdiParent;
                frm.Show();
            }
        }
        private void cmdMagazzino_Click(object sender, EventArgs e)
        {
            frmElencoMagazzino frm = new frmElencoMagazzino();
            frm.MdiParent = this.MdiParent;
            frm.Show();
        }
        private void cmdScarica_Click(object sender, EventArgs e)
        {
            if (Grid.DataSource != null &&
                Grid.Rows.Count > 0)
            {
                ProdottoSelezionato = (Prodotto)
                    Grid.SelectedRows[0].DataBoundItem;
                frmMovimentaProdotto frm = new frmMovimentaProdotto(ProdottoSelezionato,
                    ctrlMagazzino.Causale.SC);
                frm.MdiParent = this.MdiParent;
                frm.Show();
            }
        }
        private void cmdCarica_Click(object sender, EventArgs e)
        {
            if (Grid.DataSource != null &&
                Grid.Rows.Count > 0)
            {
                ProdottoSelezionato = (Prodotto)
                    Grid.SelectedRows[0].DataBoundItem;
                frmMovimentaProdotto frm = new frmMovimentaProdotto(ProdottoSelezionato,
                    ctrlMagazzino.Causale.CA);
                frm.MdiParent = this.MdiParent;
                frm.Show();
            }
        }

        private void Grid_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }
    }
}
